#ifndef RESETDIALOG_H
#define RESETDIALOG_H


#include "global.h"
#include "HttpMgr.h"

#include <QDialog>
#include <QRegularExpression>
#include <QString>
#include <QJsonDocument> // jsonDoc
#include <QMap>
#include <QUrl>
#include <QTimer>

namespace Ui {
class ResetDialog;
}

class ResetDialog : public QDialog
{
    Q_OBJECT

public:
    explicit ResetDialog(QWidget *parent = nullptr);
    ~ResetDialog();

private slots:
    void on_varify_btn_clicked();
    void on_confirm_btn_clicked();
    void on_return_btn_clicked();

    void slot_reset_mod_finish(ReqId id, QString res, ErrorCodes err);

signals:
    void switchLogin(); // 返回登陆的信号

private:
    Ui::ResetDialog *ui;

    // 消息处理的声明
    void initHandlers();
    QMap<ReqId, std::function<void(const QJsonObject&)>> _handlers; // 消息处理

    // 提示函数(注意函数一旦发生改动的话，调用这个函数的地方也是要发生改动的，不发生改动的话，是可以加上默认参数的)
    void showTip(QString errstr = "", bool b_ok = true);
    // 输入框的验证
    bool checkUserValid();
    bool checkEmailValid();
    bool checkPassValid();
    bool checkVarifyValid();
    // 添加和删除错误
    void AddTipErr(TipErr err, QString tip);
    void DelTipErr(TipErr err);
    QMap<TipErr, QString> _tip_errs; // _tip_errs用来缓存各个输入框输入完成后提示的错误，如果该输入框错误清除后就显示剩余的错误，每次只显示一条

};

#endif // RESETDIALOG_H
